package com.ashin.leetcode;

import org.junit.Test;

import java.util.Stack;

/**
 * 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。
 * <p>
 * 有效字符串需满足：
 * <p>
 * 左括号必须用相同类型的右括号闭合。
 * 左括号必须以正确的顺序闭合。
 * 每个右括号都有一个对应的相同类型的左括号。
 *
 * @Author:Ashin
 * @Date: 2022/10/29  9:43
 * @Version 1.0
 */
public class L0020 {


    @Test
    public void test() {
        String s = "([)]";
        Stack ss=new Stack();
        System.out.println(isValid(s));
    }

    public boolean isValid(String s) {
        int left0 = 0, right0 = 0;
        int left1 = 0, right1 = 0;
        int left2 = 0, right2 = 0;

        char[] sa = s.toCharArray();

        for (char c : sa) {
            if (c == '(') {
                left0++;
            } else if (c == ')') {
                right0++;
            } else if (c == '{') {
                left1++;
            } else if (c == '}') {
                right1++;
            } else if (c == '[') {
                left2++;
            } else if (c == ']') {
                right2++;
            }

            if (left0 < right0 || left1 < right1 || left2 < right2) {
                return false;
            }
        }

        return left0 == right0 && left1 == right1 && left2 == right2;
    }

}
